
        <html>
			<head>
			     <title>技术分析：在线棋牌游戏的木马“集结号” - 360安全卫士</title>
				 <meta http-equiv="content-type" content="text/html; charset=UTF-8">
			</head>
			<body>
				<h1>原文地址:<a href="http://drops.wooyun.org/tips/8192">http://drops.wooyun.org/tips/8192</a></h1>
				
      <p>
        <h1>0x00 概况</h1>

<hr />

<p>集结号游戏中心是一款拥有较高人气的棋牌游戏平台，包含百余款潮流性竞技休闲游戏，如斗地主、三国赛马、港式五张、对杀牛牛、捕鱼达人等。360互联网安全中心近期捕获到大量伪装该游戏平台的虚假安装包，这些安装包内预置了木马病毒，并采用多种技术手段对抗杀毒软件的检测查杀，本文将对其推广渠道、对抗手段以及木马行为进行全盘分析。</p>

<h1>0x01 推广渠道</h1>

<hr />

<p>伪装“集结号游戏中心”的木马传播方式可以总结出以下三个特点：</p>

<!--more-->

<ol>
<li>针对国内主流搜索引擎，采取竞价排名推广，使得带有木马的虚假游戏中心网页在搜索结果中排在前面，容易被游戏玩家搜索下载到；</li>
<li>木马作者高度模仿官方网站，普通网友完全无法辨别真假网站；</li>
<li>从木马样本分析来看，木马作者具有比较丰富的杀软对抗经验，应该是黑产“老手”；</li>
</ol>

<p>分析过程中，测试人员发现不光“集结号游戏中心”搜索结果的第一页有多个木马链接，甚至搜“集吉号游戏中心”等相似关键词也会中招。点击链接进入页面，会发现虚假页面与官方网站（www.jjhgame.com）几乎一样，某些域名与官网也高度相似，如www.jjhgwame.com、www.jjhgtame.com、 www.jjgqne.com等。可以看出，木马为了推广下了不少本钱。如下图1所示：</p>

<p><img src="http://static.wooyun.org//drops/20150822/2015082201203540620.png" alt="enter image description here" /></p>

<p>点击上图中第二项搜索结果www.jjhgqne.com，页面被重定向至jjhgames.jjhgqne.com:81，见下图2，重定向页面是一个钓鱼页面，和官网风格完全一样（见图3），但其页面上的链接都指向自身（href=’#’），仅网吧版、精简版按扭指向待下载的重打包木马安装包</p>

<p><img src="http://static.wooyun.org//drops/20150822/2015082201203584087.png" alt="enter image description here" /></p>

<p>与此同时，在集结号游戏官方网站发现，游戏官方也提示近期在百度搜索中出现大量虚假页面，建议用户认清官网地址http://www.jjhgame.com防止上当受骗。如下图3所示：</p>

<p><img src="http://static.wooyun.org//drops/20150822/2015082201203723939.png" alt="enter image description here" /></p>

<p>测试发现，木马作者注册的钓鱼页面内容几乎一样，而重新打包的安装包里木马混白技术也相似，推测所有钓鱼页面出自同一作者之手。作者注册大量与官网jjhgame相似的域名，并伪造相同的页面，用以传播推广木马。</p>

<h1>0x02 混淆对抗</h1>

<hr />

<p>接下来，我们下载官方安装包及多个木马安装包进行对比分析，通过分析发现木马作者在不同安装包中使用多种手法进行对抗，试图躲避杀毒软件的查杀，总结主要包括下面4种对抗手段：</p>

<p>1 劫持原安装包中Download.dll，将原Download.dll修改为game.dll名，在恶意Download.dll中重新加载game.dll；如下图7所示：</p>

<p><img src="http://static.wooyun.org//drops/20150822/2015082201203920240.png" alt="enter image description here" /></p>

<p>从文件日期可以看出，Download.dll是2015年7月27号生成，说明该木马作者依旧很活跃。木马文件Download.dll导出了与game.dll中相同的函数CreateDownloadService，该DLL函数会在GamePlaza.exe被加载调用；图8展示了Download.dll劫持手法：</p>

<p><img src="http://static.wooyun.org//drops/20150822/2015082201203960572.png" alt="enter image description here" /></p>

<p>图8-Download劫持手法</p>

<p>2 使用StudyPE添加新的导入表项Gamejjh.dll，通过该方式StudyPE会在PE结构中新增.newimp节，将需要的DLL及其函数字符串写入其中，并在IAT表中添加相应的导入表项。 原GamePlaza.exe并未导入Gamejjh.dll。如下图9、图10所示是被修改后的GamePlaza.exe主程序：</p>

<p><img src="http://static.wooyun.org//drops/20150822/2015082201203918475.png" alt="enter image description here" /></p>

<p>图9-导入目录</p>

<p><img src="http://static.wooyun.org//drops/20150822/2015082201203980788.png" alt="enter image description here" /></p>

<p>图10-新增节信息</p>

<p>3 修改ComService.dll，Inline Hook DllEntryPoint函数，函数入口强制JMP到TEXT节最后，在该处进行DLL(虚假msvcrt8.dll) 加载。</p>

<p>下图11展示了木马强制跳转至其恶意代码的截图：</p>

<p><img src="http://static.wooyun.org//drops/20150822/2015082201204026675.png" alt="enter image description here" /></p>

<p>图11-加载恶意代码</p>

<p>4 通过细微修改原版GameUpdate.exe，AutoUpdate.exe， login.ini文件，Patch原版游戏中心的升级路径，对抗查杀。原官方版本的login.ini文件内容如下图12：</p>

<p><img src="http://static.wooyun.org//drops/20150822/2015082201204064203.png" alt="enter image description here" /></p>

<p>图12-官方配置文件（ login.ini）</p>

<p>重打包后木马安装包里的login.ini文件如下图13：</p>

<p><img src="http://static.wooyun.org//drops/20150822/2015082201204091247.png" alt="enter image description here" /></p>

<p>图13-病毒配置文件（ login.ini）</p>

<p>通过分析发现字段UpdateIp在原版的GameUpdate、AutoUpdate程序里都会使用，木马作者一方面修改GameUpdate里对UpdateIp的引用为UphostIp，使其能正常工作，另一方面Nop掉AutoUpdate里的MessageBox函数，使其静默下载update.iiibbbvv.com:81的木马安装包升级。</p>

<p>除上述4种手段外，测试还发现大量其他手段，其方式和上述差不多，如修改zip.dll文件IAT表，注入d3dx9_53.dll；劫持NetWorkService.dll等。</p>

<h1>0x03 木马分析</h1>

<hr />

<p>1 Download.dll盗号木马</p>

<p>该木马通过劫持集结号游戏中心的正常Download.dll程序启动，原文件284KB，病毒程序309KB。该DLL启动起来后加载common.dll文件，并调用其ifconfig函数，接着从GamePlaza.exe和PropertyModule.dll中搜索特殊字节串，并hook帐号密码处理函数等。程序代码如下图14所示：</p>

<p><img src="http://static.wooyun.org//drops/20150822/2015082201204029767.png" alt="enter image description here" /></p>

<p>图14-盗号木马</p>

<p>下文依次截图展示hook帐号输入的过程：</p>

<p>1）木马从地址空间0x401000开始搜索特征串0FB6D085D27422C7，定位到相应地址并保存；见下图15所示：</p>

<p><img src="http://static.wooyun.org//drops/20150822/2015082201204057156.png" alt="enter image description here" /></p>

<p>图15-搜索特征串</p>

<p>2）Hook相应前一步搜索到的地址的代码，在获取输入帐号后调用木马自身函数get_account，该函数内部将帐号发送至木马作者服务器；如图16所示。</p>

<p><img src="http://static.wooyun.org//drops/20150822/2015082201204017819.png" alt="enter image description here" /></p>

<p>图16-hook函数</p>

<p>搜索对应的字节串，在GamePlaza.exe中找到相应位置如下图，可以看出这里是GamePlaza帐号登陆处理函数：如图17所示。</p>

<p><img src="http://static.wooyun.org//drops/20150822/2015082201204147041.png" alt="enter image description here" /></p>

<p>图17-登陆函数</p>

<p>2 Common.dll后门</p>

<p>在盗号Download.dll中加载本DLL，调用其ifconfig函数；该程序是一个Gh0st改写的后门程序，从云端获取配置信息、监听本地端口、注册服务、添加自启动、检测杀毒软件等；</p>

<p><img src="http://static.wooyun.org//drops/20150822/2015082201204177748.png" alt="enter image description here" /></p>

<p>图18-Gh0st后门</p>

<h1>0x04 其他信息</h1>

<hr />

<p>据分析，这些虚假的游戏中心钓鱼网站均使用虚假的个人信息进行域名注册，变化频繁，没有实际意义。调查发现，病毒木马的黑产团伙除了针对集结号游戏平台发起攻击外，还会对市面各类游戏中心使用类似的手法进行攻击，如辰龙游戏中心、906游戏中心等。此外，团伙还会开发各种外挂、工具，如凤凰游戏、剑侠情缘等游戏外挂，由此可以推测，该团伙研发的各种盗号、远控木马还可能通过其研发的外挂进行传播。</p>

<p>如图19所示，我们再次在百度中搜索辰龙游戏中心，第一项是官方网址，而之后连续三个全是钓鱼页面。</p>

<p>从搜索第一项和第二项可以明显看出，木马作者依旧采用老方法注册相似的域名（官网cl059.com，钓鱼网址cl0579.zj、cl0559.aliapp）欺骗用户，伪造页面与官网完全一样。</p>

<p><img src="http://static.wooyun.org//drops/20150822/2015082201204150896.png" alt="enter image description here" /></p>

<p>图19-辰龙游戏中心搜索结果</p>

<h1>0x05 防范措施</h1>

<hr />

<p>在线棋牌这类休闲游戏，尽管游戏官方可能不允许现金交易，但是通过第三方交易手段，现实中的货币和游戏中货币是可以互相兑换的。这类游戏都含有赌博成分在里面，甚至有的本身就是赌博，容易让玩家沉迷其中，不能自拔，所以很多木马团伙就打这上面的主意。</p>

<p>木马作者大量购买域名，与官方棋牌游戏相似度极高，又通过搜索竞价排名推广，对普通玩家来说极具迷惑性。在此我们建议游戏玩家：不要轻信搜索结果！认准官网域名再访问，不要从第三方网站下载安装包。同时电脑注意开启安全软件，遇到危险警报时要按提示清除木马，否则不仅会损害游戏账号安全，电脑还可能被不法分子完全控制，有可能造成更严重的后果。</p>      </p>
    
			</body>
		</html>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          